fn main(){
    let s1 = gives_ownership(); //gives_ownership将返回值移给s1
    println!("s1: {s1}");
    let s2 = String::from("hello"); //s2进入作用域
    let s3 = takes_and_gives_back(s2); //s2被移动到takes_and_gives_back中
    println!("s3: {s3}");
} // 在此, s3移出作用域并被丢弃。s2也被移出作用域，但已被移走
// 所以什么也不会发生。s1移出作用域并被丢弃
fn gives_ownership() -> String { //gives_ownership将返回值移动给调用它的函数
    let some_string = String::from("hello"); // some_string进入作用域
    some_string //返回some_string并移出给调用的函数
}
//takes_and_gives_back将传入字符串并返回值
fn takes_and_gives_back(a_string: String) -> String { //a_string 进入作用域
    a_string //返回a_string并移出给调用的函数
}
